2021 cs61a fall hw10

2022/4/30 23:24:21

本文主要是介绍2021 cs61a fall hw10,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

网址 https://inst.eecs.berkeley.edu/~cs61a/fa21/hw/hw10/
BNF:

    rstring: "r\"" regex* "\""

    ?regex: character | word | group | pipe | class | quants 

    group: "(" regex* ")"
    pipe: regex "|" regex

    character: LETTER | NUMBER
    word: WORD

    range: NUMBER "-" NUMBER | LETTER "-" LETTER
    class: "[" range* character* range* character* "]"

    ?tmp: class | group | character
    plus_quant: tmp "+"
    star_quant: tmp "*"
    num_quant: tmp "{" ((NUMBER "," NUMBER) | (NUMBER "," NUMBER?) | ("," NUMBER)) "}"
    ?quants: plus_quant | star_quant | num_quant

    %ignore /\s+/
    %import common.LETTER
    %import common.NUMBER
    %import common.WORD

SQL:

    -- The size of each dog
    CREATE TABLE size_of_dogs AS
      SELECT d.name, s.size
      FROM dogs as d, sizes as s
      where d.height <= s.max and d.height > s.min;


    -- All dogs with parents ordered by decreasing height of their parent
    CREATE TABLE by_parent_height AS
      SELECT p.child
      FROM parents as p, dogs as d
      WHERE p.parent = d.name
      ORDER BY d.height DESC;


    -- Filling out this helper table is optional
    CREATE TABLE siblings AS
      SELECT p1.child AS dogone, p2.child AS dogtwo, s1.size AS dogonesize, s2.size AS dogtwosize
      FROM parents AS p1, parents AS p2, size_of_dogs AS s1, size_of_dogs AS s2
      WHERE p1.parent = p2.parent AND p1.child < p2.child AND p1.child = s1.name AND p2.child = s2.name;
      -- p1.parent = p2.parent是siblings  p1.child < p2.child 是按照DESC排序   
      -- p1.child = s1.name AND p2.child = s2.name  是输出size
    -- Sentences about siblings that are the same size
    CREATE TABLE sentences AS
      SELECT "The tow siblings, " || dogone || " plus " || dogtow || " have the same size: " || dogonesize
      FROM siblings
      WHERE dogonesize = dogtwosize AND dogone < dogtwo;


这篇关于2021 cs61a fall hw10的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程