Giter Club home page Giter Club logo

sysu-lang2's Issues

关于 Task3 输入的疑问

作者你好,

我注意到任务3是完成从语法树到IR的翻译, 但 SYsU-lang2/task/3/README.md 中写到:

在禁用复活时, 使用 任务 0 的标准答案输出,即 clang 预处理后的测例源代码文件 作为输入, 这好像不对, 任务0的输出是 预处理后的源代码文件, 而不是 json 格式表示的语法树.

这似乎不是笔误, CMakeLists.txt 中也确实是这样做的:

SYsU-lang2/test/task3/CMakeLists.txt

# 为每个测例创建一个测试
if(TASK3_REVIVE)
  # 如果启用复活,则将前一个实验的标准答案作为输入
  // 这块儿没问题
  ...
  message(WARNING "在实验三复活:请在构建 task2-answer 后再使用 task3 的测试项目。")

else()
  # 否则以实验零的标准答案作为输入
  add_dependencies(task3-score task0-answer)

  foreach(_case ${_task3_cases})
    set(_output_dir ${CMAKE_CURRENT_BINARY_DIR}/${_case})
    file(MAKE_DIRECTORY ${_output_dir})
    // 这个地方我感觉输入是错误的
    add_test(NAME task3/${_case} COMMAND task3 ${_task0_out}/${_case}
                                         ${_output_dir}/output.ll)
    ...
  endforeach()

  message(WARNING "实验三复活已禁用,请在构建 task0-answer 后再使用 task3 的测试项目。")

endif()

我打印了其中一条命令是这样的:

./build/task/3/task3 /path/to/SYsU-lang2/build/test/task0/functional-0/000_main.sysu.c /path/to/SYsU-lang2/build/test/task3/functional-0/000_main.sysu.c/output.ll

我理解在禁用复活的情况下实验三应该是使用实验二中我们自己的生成的json格式语法树作为答案(当然现有的转json的代码还不完整, 可能还需要补充一些额外的字段, 比如id)

希望帮忙解答一下, 谢谢!

Task2 Antlr 生成SYsULexer.tokens.hpp的依赖关系似乎不正确

具体表现为:在SYsULexer.tokens加入新token后,SYsULexer.tokens.hpp并没有被重新build。

定位到问题位于task/2/antlr/CMakeLists.txt中的以下位置:
image
此处SYsULexer.tokens.hpp的依赖错误设置为了.py文件,而非生成该文件所需的.tokens文件

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.